package com.heatup.apt.model.company;

import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 企业信息表
 */
@TableName("company_info")
public class CompanyInfo implements Serializable {

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /**
     * 企业ID
     */
    @TableId
    private Long id;

    /**
     * 企业名称
     */
    private String name;

    /**
     * 企业管理员姓名
     */
    private String manager;

    /**
     * 企业管理员手机
     */
    @TableField(value = "manager_mobile")
    private String managerMobile;

    /**
     * 客户经理
     **/
    @TableField(value = "client_manager")
    private String clientManager;

    /**
     * 客户经理手机
     **/
    @TableField(value = "client_manager_mobile")
    private String clientManagerMobile;

    /**
     * (默认初始)企业账户余额
     */
    private BigDecimal amount;

    /**
     * 是否设置员工每月限额默认值(0限制 1不限)
     */
    @TableField(value = "is_monthly_limit")
    private Integer isMonthlyLimit;

    /**
     * 员工每月限额(限额状态开启时 才有效)
     */
    @TableField(value = "monthly_limit")
    private BigDecimal monthlyLimit;

    /**
     * 是否设置企业月度总限额(0限制 1不限)
     */
    @TableField(value = "is_monthly_total_limit")
    private Integer isMonthlyTotalLimit;

    /**
     * 企业月度总限额
     **/
    @TableField(value = "monthly_total_limit")
    private BigDecimal monthlyTotalLimit;

    /**
     * 购买限制(0限制 1不限)
     */
    @TableField(value = "is_buy_type_limit")
    private Integer isBuyTypeLimit;

    /**
     * 团课限制(0不允许 1允许)
     */
    @TableField(value = "limit_team_course")
    private Integer limitTeamCourse;

    /**
     * 私教限制(0不允许 1允许)
     */
    @TableField(value = "limit_secret_course")
    private Integer limitSecretCourse;

    /**
     * 檬营限制(0不允许 1允许)
     */
    @TableField(value = "limit_camp_course")
    private Integer limitCampCourse;

    /**
     * 自助限制(0不允许 1允许)
     */
    @TableField(value = "limit_self_course")
    private Integer limitSelfCourse;

    /**
     * 会员限制(0不允许 1允许)
     */
    @TableField(value = "limit_vip")
    private Integer limitVip;

    /**
     * 储值卡限制(0不允许 1允许)
     */
    @TableField(value = "limit_valued_card")
    private Integer limitValuedCard;

    /**
     * 是否限制可用门店(0限制 1不限)
     */
    @TableField(value = "is_store_list_limit")
    private Integer isStoreListLimit;

    /**
     * 限制门店时 可用门店 以 # 隔开
     */
    @TableField(value = "store_list_limit")
    private String storeListLimit;

    /**
     * 状态(0已保存 1通过校验 2冻结)
     */
    private Integer status;

    /**
     * 是否以会员价格结算 0会员价 1原价
     */
    @TableField(value = "vip_check_type")
    private Integer vipCheckType;

    /**
     * 以会员价格支付时 是否限制多次购买 0限制 1不限
     */
    @TableField(value = "vip_check_vip_price_order_many")
    private Integer vipCheckVipPriceOrderMany;

    /**
     * 以会员价格支付时 是否限制可使用门店 0限制 1不限
     */
    @TableField(value = "vip_check_store_limit")
    private Integer vipCheckStoreLimit;

    /**
     * 限制可使用门店时 可使用的门店列表 以 # 隔开
     */
    @TableField(value = "vip_check_store_list")
    private String vipCheckStoreList;

    /**
     * 以会员价格支付时 是否限制以会员价结算的课程类型 0限制 1不限
     */
    @TableField(value = "vip_check_course_type_limit")
    private Integer vipCheckCourseTypeLimit;

    /**
     * 是否限制以会员价格结算的团课 0限制 1不限
     */
    @TableField(value = "vip_check_course_type_team")
    private Integer vipCheckCourseTypeTeam;

    /**
     * 是否限制以会员价格结算的私教 0限制 1不限
     */
    @TableField(value = "vip_check_course_type_private")
    private Integer vipCheckCourseTypePrivate;

    /**
     * 是否限制以会员价格结算的檬营 0限制 1不限
     */
    @TableField(value = "vip_check_course_type_camp")
    private Integer vipCheckCourseTypeCamp;

    /**
     * 是否限制以会员价格结算的自助 0限制 1不限
     */
    @TableField(value = "vip_check_course_type_self")
    private Integer vipCheckCourseTypeSelf;


    /**
     * 备注
     */
    private String remark;

    /**
     * 校验人
     */
    @TableField(value = "checked_by")
    private String checkedBy;

    /**
     * 创建人
     */
    @TableField(value = "created_by")
    private Integer createdBy;

    /**
     * 创建时间
     */
    @TableField(value = "created_time")
    private Date createdTime;

    /**
     * 更新人
     */
    @TableField(value = "updated_by")
    private Integer updatedBy;

    /**
     * 更新时间
     */
    @TableField(value = "updated_time")
    private Date updatedTime;

    /**
     * 更新乐观锁
     */
    private Integer version;

    /**
     * 以下字段本表并存在
     */

    /**
     * 员工状态正常的数量
     */
    @TableField(exist = false)
    private Integer staffNormalCount;

    /**
     * 历史总消耗金额
     */
    @TableField(exist = false)
    private BigDecimal totalCostAmount;

    /**
     * 当前月份已使用金额
     */
    @TableField(exist = false)
    private BigDecimal currentCostAmount;

    /**
     * 当前剩余金额
     */
    @TableField(exist = false)
    private BigDecimal currentLeftAmount;

    /**
     * 所有员工的数量
     */
    @TableField(exist = false)
    private Integer staffTotalCount;

    /**
     * 当前月度剩余额度
     */
    @TableField(exist = false)
    private BigDecimal monthlyLimitLeftAmount;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getManager() {
        return manager;
    }

    public void setManager(String manager) {
        this.manager = manager;
    }

    public String getManagerMobile() {
        return managerMobile;
    }

    public void setManagerMobile(String managerMobile) {
        this.managerMobile = managerMobile;
    }

    public String getClientManager() {
        return clientManager;
    }

    public void setClientManager(String clientManager) {
        this.clientManager = clientManager;
    }

    public String getClientManagerMobile() {
        return clientManagerMobile;
    }

    public void setClientManagerMobile(String clientManagerMobile) {
        this.clientManagerMobile = clientManagerMobile;
    }

    public BigDecimal getAmount() {
        return amount;
    }

    public void setAmount(BigDecimal amount) {
        this.amount = amount;
    }

    public Integer getIsMonthlyLimit() {
        return isMonthlyLimit;
    }

    public void setIsMonthlyLimit(Integer isMonthlyLimit) {
        this.isMonthlyLimit = isMonthlyLimit;
    }

    public BigDecimal getMonthlyLimit() {
        return monthlyLimit;
    }

    public void setMonthlyLimit(BigDecimal monthlyLimit) {
        this.monthlyLimit = monthlyLimit;
    }

    public Integer getIsMonthlyTotalLimit() {
        return isMonthlyTotalLimit;
    }

    public void setIsMonthlyTotalLimit(Integer isMonthlyTotalLimit) {
        this.isMonthlyTotalLimit = isMonthlyTotalLimit;
    }

    public BigDecimal getMonthlyTotalLimit() {
        return monthlyTotalLimit;
    }

    public void setMonthlyTotalLimit(BigDecimal monthlyTotalLimit) {
        this.monthlyTotalLimit = monthlyTotalLimit;
    }

    public Integer getIsBuyTypeLimit() {
        return isBuyTypeLimit;
    }

    public void setIsBuyTypeLimit(Integer isBuyTypeLimit) {
        this.isBuyTypeLimit = isBuyTypeLimit;
    }

    public Integer getLimitTeamCourse() {
        return limitTeamCourse;
    }

    public void setLimitTeamCourse(Integer limitTeamCourse) {
        this.limitTeamCourse = limitTeamCourse;
    }

    public Integer getLimitSecretCourse() {
        return limitSecretCourse;
    }

    public void setLimitSecretCourse(Integer limitSecretCourse) {
        this.limitSecretCourse = limitSecretCourse;
    }

    public Integer getLimitCampCourse() {
        return limitCampCourse;
    }

    public void setLimitCampCourse(Integer limitCampCourse) {
        this.limitCampCourse = limitCampCourse;
    }

    public Integer getLimitSelfCourse() {
        return limitSelfCourse;
    }

    public void setLimitSelfCourse(Integer limitSelfCourse) {
        this.limitSelfCourse = limitSelfCourse;
    }

    public Integer getLimitVip() {
        return limitVip;
    }

    public void setLimitVip(Integer limitVip) {
        this.limitVip = limitVip;
    }

    public Integer getLimitValuedCard() {
        return limitValuedCard;
    }

    public void setLimitValuedCard(Integer limitValuedCard) {
        this.limitValuedCard = limitValuedCard;
    }

    public Integer getIsStoreListLimit() {
        return isStoreListLimit;
    }

    public void setIsStoreListLimit(Integer isStoreListLimit) {
        this.isStoreListLimit = isStoreListLimit;
    }

    public String getStoreListLimit() {
        return storeListLimit;
    }

    public void setStoreListLimit(String storeListLimit) {
        this.storeListLimit = storeListLimit;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getVipCheckType() {
        return vipCheckType;
    }

    public void setVipCheckType(Integer vipCheckType) {
        this.vipCheckType = vipCheckType;
    }

    public Integer getVipCheckVipPriceOrderMany() {
        return vipCheckVipPriceOrderMany;
    }

    public void setVipCheckVipPriceOrderMany(Integer vipCheckVipPriceOrderMany) {
        this.vipCheckVipPriceOrderMany = vipCheckVipPriceOrderMany;
    }

    public Integer getVipCheckStoreLimit() {
        return vipCheckStoreLimit;
    }

    public void setVipCheckStoreLimit(Integer vipCheckStoreLimit) {
        this.vipCheckStoreLimit = vipCheckStoreLimit;
    }

    public String getVipCheckStoreList() {
        return vipCheckStoreList;
    }

    public void setVipCheckStoreList(String vipCheckStoreList) {
        this.vipCheckStoreList = vipCheckStoreList;
    }

    public Integer getVipCheckCourseTypeLimit() {
        return vipCheckCourseTypeLimit;
    }

    public void setVipCheckCourseTypeLimit(Integer vipCheckCourseTypeLimit) {
        this.vipCheckCourseTypeLimit = vipCheckCourseTypeLimit;
    }

    public Integer getVipCheckCourseTypeTeam() {
        return vipCheckCourseTypeTeam;
    }

    public void setVipCheckCourseTypeTeam(Integer vipCheckCourseTypeTeam) {
        this.vipCheckCourseTypeTeam = vipCheckCourseTypeTeam;
    }

    public Integer getVipCheckCourseTypePrivate() {
        return vipCheckCourseTypePrivate;
    }

    public void setVipCheckCourseTypePrivate(Integer vipCheckCourseTypePrivate) {
        this.vipCheckCourseTypePrivate = vipCheckCourseTypePrivate;
    }

    public Integer getVipCheckCourseTypeCamp() {
        return vipCheckCourseTypeCamp;
    }

    public void setVipCheckCourseTypeCamp(Integer vipCheckCourseTypeCamp) {
        this.vipCheckCourseTypeCamp = vipCheckCourseTypeCamp;
    }

    public Integer getVipCheckCourseTypeSelf() {
        return vipCheckCourseTypeSelf;
    }

    public void setVipCheckCourseTypeSelf(Integer vipCheckCourseTypeSelf) {
        this.vipCheckCourseTypeSelf = vipCheckCourseTypeSelf;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public String getCheckedBy() {
        return checkedBy;
    }

    public void setCheckedBy(String checkedBy) {
        this.checkedBy = checkedBy;
    }

    public Integer getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(Integer createdBy) {
        this.createdBy = createdBy;
    }

    public Date getCreatedTime() {
        return createdTime;
    }

    public void setCreatedTime(Date createdTime) {
        this.createdTime = createdTime;
    }

    public Integer getUpdatedBy() {
        return updatedBy;
    }

    public void setUpdatedBy(Integer updatedBy) {
        this.updatedBy = updatedBy;
    }

    public Date getUpdatedTime() {
        return updatedTime;
    }

    public void setUpdatedTime(Date updatedTime) {
        this.updatedTime = updatedTime;
    }

    public Integer getVersion() {
        return version;
    }

    public void setVersion(Integer version) {
        this.version = version;
    }

    public Integer getStaffNormalCount() {
        return staffNormalCount;
    }

    public void setStaffNormalCount(Integer staffNormalCount) {
        this.staffNormalCount = staffNormalCount;
    }

    public BigDecimal getTotalCostAmount() {
        return totalCostAmount;
    }

    public void setTotalCostAmount(BigDecimal totalCostAmount) {
        this.totalCostAmount = totalCostAmount;
    }

    public BigDecimal getCurrentCostAmount() {
        return currentCostAmount;
    }

    public void setCurrentCostAmount(BigDecimal currentCostAmount) {
        this.currentCostAmount = currentCostAmount;
    }

    public BigDecimal getCurrentLeftAmount() {
        return currentLeftAmount;
    }

    public void setCurrentLeftAmount(BigDecimal currentLeftAmount) {
        this.currentLeftAmount = currentLeftAmount;
    }

    public Integer getStaffTotalCount() {
        return staffTotalCount;
    }

    public void setStaffTotalCount(Integer staffTotalCount) {
        this.staffTotalCount = staffTotalCount;
    }

    public BigDecimal getMonthlyLimitLeftAmount() {
        return monthlyLimitLeftAmount;
    }

    public void setMonthlyLimitLeftAmount(BigDecimal monthlyLimitLeftAmount) {
        this.monthlyLimitLeftAmount = monthlyLimitLeftAmount;
    }

    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("CompanyInfo{");
        sb.append("id=").append(id);
        sb.append(", name='").append(name).append('\'');
        sb.append(", manager='").append(manager).append('\'');
        sb.append(", managerMobile='").append(managerMobile).append('\'');
        sb.append(", clientManager='").append(clientManager).append('\'');
        sb.append(", clientManagerMobile='").append(clientManagerMobile).append('\'');
        sb.append(", amount=").append(amount);
        sb.append(", isMonthlyLimit=").append(isMonthlyLimit);
        sb.append(", monthlyLimit=").append(monthlyLimit);
        sb.append(", isMonthlyTotalLimit=").append(isMonthlyTotalLimit);
        sb.append(", monthlyTotalLimit=").append(monthlyTotalLimit);
        sb.append(", isBuyTypeLimit=").append(isBuyTypeLimit);
        sb.append(", limitTeamCourse=").append(limitTeamCourse);
        sb.append(", limitSecretCourse=").append(limitSecretCourse);
        sb.append(", limitCampCourse=").append(limitCampCourse);
        sb.append(", limitSelfCourse=").append(limitSelfCourse);
        sb.append(", limitVip=").append(limitVip);
        sb.append(", limitValuedCard=").append(limitValuedCard);
        sb.append(", isStoreListLimit=").append(isStoreListLimit);
        sb.append(", storeListLimit='").append(storeListLimit).append('\'');
        sb.append(", status=").append(status);
        sb.append(", vipCheckType=").append(vipCheckType);
        sb.append(", vipCheckVipPriceOrderMany=").append(vipCheckVipPriceOrderMany);
        sb.append(", vipCheckStoreLimit=").append(vipCheckStoreLimit);
        sb.append(", vipCheckStoreList='").append(vipCheckStoreList).append('\'');
        sb.append(", vipCheckCourseTypeLimit=").append(vipCheckCourseTypeLimit);
        sb.append(", vipCheckCourseTypeTeam=").append(vipCheckCourseTypeTeam);
        sb.append(", vipCheckCourseTypePrivate=").append(vipCheckCourseTypePrivate);
        sb.append(", vipCheckCourseTypeCamp=").append(vipCheckCourseTypeCamp);
        sb.append(", vipCheckCourseTypeSelf=").append(vipCheckCourseTypeSelf);
        sb.append(", remark='").append(remark).append('\'');
        sb.append(", checkedBy='").append(checkedBy).append('\'');
        sb.append(", createdBy=").append(createdBy);
        sb.append(", createdTime=").append(createdTime);
        sb.append(", updatedBy=").append(updatedBy);
        sb.append(", updatedTime=").append(updatedTime);
        sb.append(", version=").append(version);
        sb.append(", staffNormalCount=").append(staffNormalCount);
        sb.append(", totalCostAmount=").append(totalCostAmount);
        sb.append(", currentLeftAmount=").append(currentLeftAmount);
        sb.append(", staffTotalCount=").append(staffTotalCount);
        sb.append(", monthlyLimitLeftAmount=").append(monthlyLimitLeftAmount);
        sb.append('}');
        return sb.toString();
    }
}